#include "fifo.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/**
 * 函数：模拟FIFO（先进先出）页面置换算法。
 *
 * @param queue_frames 一个字符串，表示页面访问序列。
 *                     字符串中的每个字符是一个数字，表示一个页面号。
 * @param num_frames   页框的数量，表示物理内存中可用的页框数。
 */
void
fifo_page_replacement (char *queue_frames, int num)
{
  int *arr = malloc (num * sizeof (int));
  memset (arr, -1, num * sizeof (int));
  char *token = strtok (queue_frames, ",");
  int page, cur = 0;
  while (token != NULL)
    {
      page = atoi(token);
      printf("Access:%d,Frames: [", page);
      arr[cur] = page;
      cur = (cur + 1) % num;
      printf("%d", arr[0]);
      for (int i = 1; i < num; i++) {
        printf(",%d", arr[i]);
      }
      printf("]\n");
      token = strtok (NULL, ",");
    }
  return;
}
